﻿using FM.Storage.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace FM.Core.Storage
{
    public interface IFileManager : IDisposable
    {
        Task<Stream> GetAsync(String fileName, string process = null);
        Task GetAsync(Stream outputStream, String fileName);
        Task<Boolean> FileExistsAsync(String fileName);
        Task SaveAsync(String fileName, Stream content, Int32 currentNum = 0, Int32 totalNum = 0,
            String sessionKey = null, String ip = null, Int32 rootFolderId = 0);
        OOSSignVerify GetOosSignVerify();
        Task SaveAsync(string bucketName, string endpoint, string accessKeySecret, string accessKeyId, string SecurityToken, String fileName, Stream content, Int32 currentNum = 0, Int32 totalNum = 0, String sessionKey = null, String ip = null, Int32 rootFolderId = 0);
        Task DeleteFileAsync(String fileName);
        Task WriteToStream(Stream outputStream, HttpContent content, TransportContext context);
        Task CopyAsync(String sourceFileName, String destinationFileName);
    }
}
